home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 April / PCWorld_2007-04_cd.bin / audio-video / kmplayer / kmp.exe / Shader / SharpenFlou (jim ro).txt < prev    next >
Text File  |  2006-09-08  |  2KB  |  61 lines

  1. // SharpenFlou ( jim.ro )=ps_2_0
  2. // http://www.homecinema-fr.com/forum/viewtopic.php?t=29814317 
  3.  
  4. sampler s0 : register(s0); 
  5. float4 p0 : register(c0); 
  6. float4 p1 : register(c1); 
  7.  
  8. #define width (p0[0]) 
  9. #define height (p0[1]) 
  10. #define counter (p0[2]) 
  11. #define clock (p0[3]) 
  12. #define one_over_width (p1[0]) 
  13. #define one_over_height (p1[1]) 
  14.  
  15. #define PI acos(-1) 
  16.  
  17. float4 main( float2 tex : TEXCOORD0 ) : COLOR 
  18. float dx = one_over_width; 
  19. float dy = one_over_height; 
  20.  
  21. // recupperation de la matrice de 9 points 
  22. //   [ 1, 2 , 3 ] 
  23. //   [ 4,ori, 5 ] 
  24. //   [ 6, 7 , 8 ] 
  25.  
  26.    float4 ori = tex2D(s0, tex); 
  27.    float4 c1 = tex2D(s0, tex + float2(-dx,-dy)); 
  28.    float4 c2 = tex2D(s0, tex + float2(0,-dy)); 
  29.    float4 c3 = tex2D(s0, tex + float2(dx,-dy)); 
  30.    float4 c4 = tex2D(s0, tex + float2(-dx,0)); 
  31.    float4 c5 = tex2D(s0, tex + float2(dx,0)); 
  32.    float4 c6 = tex2D(s0, tex + float2(-dx,dy)); 
  33.    float4 c7 = tex2D(s0, tex + float2(0,dy)); 
  34.    float4 c8 = tex2D(s0, tex + float2(dx,dy)); 
  35.  
  36. // calcul image floue (filtre gaussien) 
  37. float  multipliers[9]= 
  38.             {1,2,1, 
  39.              2,4,2, 
  40.              1,2,1}; 
  41.  
  42. float4 total=0; 
  43.    total +=  c1 * multipliers[0]; 
  44.    total +=  c2 * multipliers[1]; 
  45.    total +=  c3 * multipliers[2]; 
  46.    total +=  c4 * multipliers[3]; 
  47.    total +=  ori * multipliers[4]; 
  48.    total +=  c5 * multipliers[5]; 
  49.    total +=  c6 * multipliers[6]; 
  50.    total +=  c7 * multipliers[7]; 
  51.    total +=  c8 * multipliers[8]; 
  52.  
  53.    // 1/(1+2+1+2+4+2+1+2+1) = 1/ 16 = .0625 
  54.    total *= 0.0625f; 
  55.  
  56. // soustraction de l'image flou a l'image originale 
  57.    total = 2*ori - total; 
  58. //return ori; 
  59.    return total; 
  60. }